﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GeneticAlgorithm
{
    public class GeneticCyclerArgs : EventArgs
    {
        private readonly List<Configuration> _initialPopulation;
        private readonly List<SimulatedConfiguration> _simulatedPopulation;
        private readonly List<Configuration> _selectedPopulation;
        private readonly List<Configuration> _mutatedPopulation;
        private readonly int _generation;
        private int _currentCycle;

        public List<Configuration> InitialPopulation
        {
            get { return _initialPopulation; }
        }

        public List<SimulatedConfiguration> SimulatedPopulation
        {
            get { return _simulatedPopulation; }
        }

        public List<Configuration> SelectedPopulation
        {
            get { return _selectedPopulation; }
        }

        public List<Configuration> MutatedPopulation
        {
            get { return _mutatedPopulation; }
        }

        public int Generation
        {
            get { return _generation; }
        }

        public int CurrentCycle
        {
            get { return _currentCycle; }
        }

        public GeneticCyclerArgs(List<Configuration> initial, List<SimulatedConfiguration> simulated,
            List<Configuration> selected, List<Configuration> mutated, int generation, int currentCycle)
        {
            _initialPopulation = new List<Configuration>(initial);
            _selectedPopulation = new List<Configuration>(selected);
            _simulatedPopulation = new List<SimulatedConfiguration>(simulated);
            _mutatedPopulation = new List<Configuration>(mutated);
            _generation = generation;
            _currentCycle = currentCycle;
        }
    }
}
